home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Linux Cubed Series 8: LINUX Games
/
Linux Cubed Series 8 - LINUX Games.iso
/
games
/
doom
/
ldhe-src.0
/
ldhe-src
/
dehacked
/
source
/
snd2au.cc
< prev
next >
Wrap
Text File
|
1995-03-22
|
3KB
|
72 lines
/************************************************************************/
/* Copyright 1989 by Rich Gopstein and Harris Corporation */
/* */
/* Permission to use, copy, modify, and distribute this software */
/* and its documentation for any purpose and without fee is */
/* hereby granted, provided that the above copyright notice */
/* appears in all copies and that both that copyright notice and */
/* this permission notice appear in supporting documentation, and */
/* that the name of Rich Gopstein and Harris Corporation not be */
/* used in advertising or publicity pertaining to distribution */
/* of the software without specific, written prior permission. */
/* Rich Gopstein and Harris Corporation make no representations */
/* about the suitability of this software for any purpose. It */
/* provided "as is" without express or implied warranty. */
/************************************************************************/
/************************************************************************/
/* sound2sun.c - Convert sampled audio files into uLAW format for the */
/* Sparcstation 1. */
/* Send comments to ..!rutgers!soleil!gopstein */
/************************************************************************/
/* */
/* Modified November 27, 1989 to convert to 8000 samples/sec */
/* (contrary to man page) */
/* */
/* Fixed Bug with converting slow sample speeds */
/* */
/************************************************************************/
/* */
/* Modified 11/1991 */
/* By nevs@opal.cs.tu-berlin.de */
/* (contrary to man page) */
/* */
/* */
/************************************************************************/
/* convert two's complement ch into uLAW format */
unsigned int sample_cvt(int ch)
{
int mask;
if (ch < 0) {
ch = -ch;
mask = 0x7f;
} else {
mask = 0xff;
}
if (ch < 32) {
ch = 0xF0 | 15 - (ch / 2);
} else if (ch < 96) {
ch = 0xE0 | 15 - (ch - 32) / 4;
} else if (ch < 224) {
ch = 0xD0 | 15 - (ch - 96) / 8;
} else if (ch < 480) {
ch = 0xC0 | 15 - (ch - 224) / 16;
} else if (ch < 992) {
ch = 0xB0 | 15 - (ch - 480) / 32;
} else if (ch < 2016) {
ch = 0xA0 | 15 - (ch - 992) / 64;
} else if (ch < 4064) {
ch = 0x90 | 15 - (ch - 2016) / 128;
} else if (ch < 8160) {
ch = 0x80 | 15 - (ch - 4064) / 256;
} else {
ch = 0x80;
}
return (mask & ch);
}